package com.example.mvvmtemplate.utli.log;

import android.util.Log;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * 打印log日志
 */
public class PrintLog {

    // 是否打开日志
    public static Boolean isLog = false;

    public static final String LINE_SEPARATOR = System.getProperty("line.separator");

    private static void printLine(String tag, boolean isTop) {
        if (!isLog) {
            return;
        }
        if (isTop) {
            Log.e(tag, "╔═══════════════════════════════════════════════════════════════════════════════════════");
        } else {
            Log.e(tag, "╚═══════════════════════════════════════════════════════════════════════════════════════");
        }
    }

    public static void printJson(String tag, String msg, String headString) {
        if (!isLog) {
            return;
        }
        String message;

        try {
            if (msg.startsWith("{")) {
                JSONObject jsonObject = new JSONObject(msg);
                message = jsonObject.toString(4);//最重要的方法，就一行，返回格式化的json字符串，其中的数字4是缩进字符数
            } else if (msg.startsWith("[")) {
                JSONArray jsonArray = new JSONArray(msg);
                message = jsonArray.toString(4);
            } else {
                message = msg;
            }
        } catch (JSONException e) {
            message = msg;
        }

        printLine(tag, true);
        message = headString + LINE_SEPARATOR + message;
        String[] lines = message.split(LINE_SEPARATOR);
        for (String line : lines) {
            Log.e(tag, "║ " + line);
        }
        printLine(tag, false);
    }

    public static void printVerbose(String tag, String msg) {
        if (!isLog) {
            return;
        }
        Log.v(tag, msg);
    }

    public static void printDebug(String tag, String msg) {
        if (!isLog) {
            return;
        }
        Log.d(tag, msg);
    }

    public static void printInfo(String tag, String msg) {
        if (!isLog) {
            return;
        }
        Log.i(tag, msg);
    }

    public static void printWarn(String tag, String msg) {
        if (!isLog) {
            return;
        }
        Log.w(tag, msg);
    }

    public static void printError(String tag, String msg) {
        if (!isLog) {
            return;
        }
        Log.e(tag, msg);
    }
}
